package com.bdqn.aop;

import org.aspectj.lang.JoinPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Arrays;

/**
 * LoggerAspect 日志切面（关注日志这个方面的事情）
 *
 * @author LILIBO
 * @since 2025/2/10
 */
public class LoggerAspect {

    /**
     * 日志
     */
    private static final Logger log = LoggerFactory.getLogger(LoggerAspect.class);

    /**
     * 前置增强-打印参数信息
     *
     * @param jp 连接点对象（可以获取到被代理对象方法的信息，包括对象、方法名、参数等）
     */
    public void before(JoinPoint jp) {
        log.info("【LoggerAspect 前置增强】调用 {} 的 {} 方法。方法入参：{}", jp.getTarget(), jp.getSignature().getName(), Arrays.toString(jp.getArgs()));
    }

    /**
     * 后置增强-打印返回结果
     *
     * @param jp 连接点对象
     * @param result 返回结果
     */
    public void afterReturning(JoinPoint jp, Object result) {
        log.info("【LoggerAspect 后置增强】调用 {} 的 {} 方法。方法返回值：{}", jp.getTarget(), jp.getSignature().getName(), result);
    }

}
